package Lagou;

import java.util.Scanner;
import java.sql.SQLOutput;
import java.util.Scanner;

public class Shuzu {
    public static void main(String[] args) throws InterruptedException {
        /**
         * 数据类型[ ] 数组名称 = new 数据类型  [ 数组长度 ]—— 动态方式
         *数据类型[] 数组名称=**new  数据类型[]**{初始值1，初始值2，初始值......};
         * 2. 编程题 实现数组扩容。自定义数组长度（用户指定），
         * 扩容规则：当已存储元素数量达到总容量的 80%时，扩容到原容量的1.5 倍。
         * 例如，原容量是 10，当输入第 8 个元素时，数组进行扩容，容量从 10 变 15。
         * */
        Scanner sc = new Scanner (System.in);
        System.out.println ("——————数组扩容——————");
        System.out.println ("1.请自定义初始数组长度：");
        int x = sc.nextInt ();

        System.out.println ("3.请输入您需要扩容的倍数：");
        double z = sc.nextDouble ();
        //定义所需的数组
        int[] a = new int[x];
        int num=0;//用于做if条件判断

        //利用for循环进行简单的元素添加
         for (int n = 0; n < a.length; n++) {
             System.out.println ("请输入元素第"+(n+1)+"个元素");
             a[n]=sc.nextInt();
             num++;
            //利用if判断，当内存占比达量时进行扩容
            if (0.8*(a.length-1)<=num){
                System.out.println ("——————————————————————————");
                System.out.println ("当前的数组长度为:" + x + "\n元素有：");
                for (int i = 0; i < a.length; i++) {
                    System.out.print (a[i] + " ");
                    Thread.sleep (500);
                }
                System.out.println ();
                Thread.sleep (1000);
                System.out.println ("已达数组内存的百分之八十！！\n数组将扩容至 " + z + " 倍");
                System.out.println ("————————————————————————————");
                Thread.sleep (1000);
                int[] b = new int[(int)(x * z)];//新生成扩容后的一个数组
                /**
                 * 数组的拷贝：`System.arraycopy`(被拷贝数组名，起始位置下标，拷贝数组名，起始位置下标，元素数量)
                 */
                System.arraycopy (a, 0, b, 0, x); //将原数组数据拷贝
                //延时动画效果
                System.out.print ("扩容中>>>  ");
                Thread.sleep (1000);
                System.out.print (">>>  ");
                Thread.sleep (1000);
                System.out.print (" >>>");
                Thread.sleep (1000);

                System.out.println ();
                System.out.println ("扩容后数组长度为:" + x * z + "\n扩容后数组元素有：");
                for (int i = 0; i < b.length; i++) {
                    System.out.print (b[i] + " ");
                    Thread.sleep (500);
                }break;
            }
        }
    }
}
